{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "3fdf0106",
   "metadata": {},
   "source": [
    "K 最近邻分类算法，简称 KNN（K-Nearest-Neighbor），它是有监督学习分类算法的一种。所谓 K 近邻，就是 K 个最近的邻居。比如对一个样本数据进行分类，我们可以用与它最邻近的 K 个样本来表示它。\n",
    "\n",
    "https://blog.csdn.net/weixin_45014385/article/details/123618841"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eaae249e",
   "metadata": {},
   "source": [
    "## KNN算法原理\n",
    "KNN 算法原理：如果一个样本在特征空间中存在 K 个与其相邻的的样本，其中某一类别的样本数目较多，则待预测样本就属于这一类，并具有这个类别相关特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。\n",
    "\n",
    "KNN 算法简单易于理解，无须估计参数，与训练模型，适合于解决多分类问题。但它的不足是，当样本不平衡时，如一个类的样本容量很大，而其他类样本容量很小时，有很能导致当输入一个新样本时，该样本的 K 个邻居中大容量类的样本占多数，而此时只依照数量的多少去预测未知样本的类型，就会可能增加预测错误概率。此时，我们就可以采用对样本取“权值”的方法来改进。"
   ]
  },
  {
   "attachments": {
    "image-2.png": {
     "image/png": "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"
    },
    "image-3.png": {
     "image/png": "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"
    },
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "c68fc574",
   "metadata": {},
   "source": [
    "## KNN算法流程\n",
    "下面对 KNN 算法的流程做简单介绍。KNN 分类算法主要包括以下 4 个步骤：\n",
    "- 准备数据，对数据进行预处理 。\n",
    "- 计算测试样本点（也就是待分类点）到其他每个样本点的距离（选定度量距离的方法）。\n",
    "- 对每个距离进行排序，然后选择出距离最小的 K 个点。\n",
    "- 对 K 个点所属的类别进行比较，按照少数服从多数的原则（多数表决思想），将测试样本点归入到 K 个点中占比最高的一类中。\n",
    "\n",
    "\n",
    "欧式距离：\n",
    "![image.png](attachment:image.png)\n",
    "曼哈顿距离：\n",
    "![image-2.png](attachment:image-2.png)\n",
    "\n",
    "![image-3.png](attachment:image-3.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9e2136db",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "红酒数据集的键:\n",
      "dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names'])\n",
      "数据集描述:\n",
      "(178, 13)\n",
      "[[1.369e+01 3.260e+00 2.540e+00 2.000e+01 1.070e+02 1.830e+00 5.600e-01\n",
      "  5.000e-01 8.000e-01 5.880e+00 9.600e-01 1.820e+00 6.800e+02]\n",
      " [1.269e+01 1.530e+00 2.260e+00 2.070e+01 8.000e+01 1.380e+00 1.460e+00\n",
      "  5.800e-01 1.620e+00 3.050e+00 9.600e-01 2.060e+00 4.950e+02]\n",
      " [1.162e+01 1.990e+00 2.280e+00 1.800e+01 9.800e+01 3.020e+00 2.260e+00\n",
      "  1.700e-01 1.350e+00 3.250e+00 1.160e+00 2.960e+00 3.450e+02]\n",
      " [1.340e+01 3.910e+00 2.480e+00 2.300e+01 1.020e+02 1.800e+00 7.500e-01\n",
      "  4.300e-01 1.410e+00 7.300e+00 7.000e-01 1.560e+00 7.500e+02]\n",
      " [1.350e+01 1.810e+00 2.610e+00 2.000e+01 9.600e+01 2.530e+00 2.610e+00\n",
      "  2.800e-01 1.660e+00 3.520e+00 1.120e+00 3.820e+00 8.450e+02]]\n",
      "0.7222222222222222\n",
      "[1]\n",
      "分类结果：['class_1']\n"
     ]
    }
   ],
   "source": [
    "#加载红酒数据集\n",
    "from sklearn.datasets import load_wine\n",
    "\n",
    "#KNN分类算法\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "#分割训练集与测试集\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "#导入numpy\n",
    "import numpy as np\n",
    "\n",
    "#加载数据集\n",
    "wine_dataset=load_wine()\n",
    "\n",
    "#查看数据集对应的键\n",
    "print(\"红酒数据集的键:\\n{}\".format(wine_dataset.keys()))\n",
    "print(\"数据集描述:\\n{}\".format(wine_dataset['data'].shape))\n",
    "\n",
    "# data 为数据集数据;target 为样本标签\n",
    "#分割数据集，比例为 训练集：测试集 = 8:2\n",
    "X_train,X_test,y_train,y_test=train_test_split(wine_dataset['data'],wine_dataset['target'],test_size=0.2,random_state=0)\n",
    "\n",
    "print(X_train[:5])\n",
    "\n",
    "#构建knn分类模型，并指定 k 值\n",
    "KNN = KNeighborsClassifier(n_neighbors=10)\n",
    "\n",
    "#使用训练集训练模型\n",
    "KNN.fit(X_train,y_train)\n",
    "\n",
    "#评估模型的得分\n",
    "score = KNN.score(X_test,y_test)\n",
    "print(score)\n",
    "\n",
    "#给出一组数据对酒进行分类\n",
    "X_wine_test=np.array([[11.8,4.39,2.39,29,82,2.86,3.53,0.21,2.85,2.8,.75,3.78,490]])\n",
    "predict_result=KNN.predict(X_wine_test)\n",
    "print(predict_result)\n",
    "print(\"分类结果：{}\".format(wine_dataset['target_names'][predict_result]))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
